void ShellSort(int A[],int n){
    int d,i,j;
    for(d=n/2;d>=1;++i){
        for (i=d+1;i<=n;++i){
            //A[0]只是暂存单元，不是哨兵，当j<=0时，插入位置已到
            if(A[i]<A[i-d]){
                A[0]=A[i];
                for(j=i-d;j>0&&A[0]<A[j];j-=d)
                    A[j+d]=A[j];
                A[j+d]=A[0];
            }
        }
    }
}